package com.tywj.lib.core.common.extension

import android.graphics.drawable.Drawable
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions
import com.tywj.lib.core.common.glide.GlideApp

/**
 * <pre>
 *     author : June Yang
 *     time   : 2020/5/7
 *     desc   : ImageView扩展
 *     version: 1.0.0
 * </pre>
 */

/**
 * 加载网络图片
 */

fun ImageView.load(path: Any) {
    if (path is Int) {
        this.setImageResource(path)
        return
    }


    GlideApp.with(context)
        .load(path)
        .dontAnimate()
        .diskCacheStrategy(DiskCacheStrategy.ALL)
        .placeholder(this.drawable)
        .into(this)

}


/**
 * 加载网络图片（不进行缓存）
 */


fun ImageView.loadWithoutCache(path: Any) {
    GlideApp.with(context)
        .load(path)
        .dontAnimate()
        .placeholder(this.drawable)
        .into(this)
}


/**
 * 加载图片，（失败时显示的加载错误图片）
 */

fun ImageView.load(path: String, errorId: Int) {
    GlideApp.with(context)
        .load(path)
        .dontAnimate()
        .diskCacheStrategy(DiskCacheStrategy.ALL)
        .placeholder(this.drawable)
        .error(errorId)
        .into(this)
}


/**
 * 加载图片，（加载中时显示占位图片，失败时加载错误图片）
 */


fun ImageView.load(path: String, placeId: Int, errorId: Int) {
    GlideApp.with(context)
        .load(path)
        .dontAnimate()
        .diskCacheStrategy(DiskCacheStrategy.ALL)
        .placeholder(placeId)
        .error(errorId)
        .into(this)
}

/**
 * 加载图片，（加载中时显示占位图片，失败时加载错误图片）
 */


fun ImageView.load(path: String, placePic: Drawable, errorId: Int) {
    GlideApp.with(context)
        .load(path)
        .dontAnimate()
        .diskCacheStrategy(DiskCacheStrategy.ALL)
        .placeholder(placePic)
        .error(errorId)
        .into(this)
}

/**
 * 实现圆角图片，（失败时显示的加载错误图片）
 */

fun ImageView.loadRound(path: String, errorId: Int) {
    GlideApp.with(this)
        .load(path)
        .dontAnimate()
        .placeholder(errorId)
        // 实现圆角
        .apply(RequestOptions().circleCrop())
        .into(this)
}


/**
 * 矩形圆角幅度
 */
fun ImageView.loadRoundCorners(path: String, roundedCornerId: Int, errorId: Int) {
    GlideApp.with(this)
        .load(path)
        .dontAnimate()
        .placeholder(errorId)
        // 矩形圆角
        .apply(RequestOptions().optionalTransform(RoundedCorners(roundedCornerId)))
        .into(this)
}

//test
fun ImageView.loadImage(url:String) = GlideApp.with(this.context).load(url).into(this)

